home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / fb386 / io_bas / get_pal.bas < prev    next >
BASIC Source File  |  1994-06-01  |  3KB  |  64 lines

  1. 10 '
  2. 20 '   < パレットデーターの取得 ( I/O 操作サンプル ) >
  3. 30 '                                  for F-BASIC 386 V2.1 L10 以上
  4. 40 '                                      Programmed by Luzz-tum
  5. 50 '
  6. 60 ' サブルーチン名「*GET_PAL_16 / *GET_PAL_256」
  7. 70 '  パレットデーターを取得し、配列変数 PAL_DAT ( pallete_No , RGB )
  8. 80 ' に格納します。16 / 256 色用の2つがあり、それぞれ使用前に、下記以
  9. 90 ' 上の大きさの配列変数を宣言する必要があります。
  10. 100 '
  11. 110 '                16 色モード時  --  DIM PAL_DAT( 15,2)
  12. 120 '               256 色モード時  --  DIM PAL_DAT(255,2)
  13. 130 '
  14. 140 '   なお、PAL_DAT ( pallete_No , RGB ) の RGB の値と色の関係は以下
  15. 150 ' の通りです。
  16. 160 '                           0  =  Red
  17. 170 '                           1  =  Green
  18. 180 '                           2  =  Blue
  19. 190 '
  20. 200 '  < 16 色モード利用時の注意 >
  21. 210 '      16 色モードのパレットデーターは下位4ビットを切り捨てた形、つ
  22. 220 '  まり、輝度が最も高い状態は 255 ではなく、240 で返ってきます。簡
  23. 230 '  単に言えば、以下のいずれかの数字のみが返ってくるわけです。
  24. 240 '
  25. 250 '         0.16.32.48.64.80.96.112.128.144.160.176.192.208.224.240
  26. 260 '
  27. 270 '   なお、このルーチンで得たパレット情報は、PALETTE 命令にそのまま
  28. 280 '  流用できます。(色が変化する事は無いので心配しないでよい。)
  29. 290 '
  30. 300 ' このサンプルでは、プログラム実行直後のパレットデーターを表示します
  31. 310 '
  32. 320 SCREEN 0:SCREEN @0:VIEW:WINDOW:COLOR 7,0,7,0:CLS:WIDTH 80,25
  33. 330 DEFINT A-Z:DIM PAL_DAT(255,2)
  34. 340 PRINT "16色パレットを読み取り、表示します。"
  35. 350 GOSUB *GET_PAL_16
  36. 360 LOCATE 22,2:PRINT "Pallete no.    R    G    B"
  37. 370 FOR I=0 TO 16
  38. 380   LOCATE 26,4+I
  39. 390   PRINT USING "##       ###  ###  ###";I;PAL_DAT(I,0);PAL_DAT(I,1);PAL_DAT(I,2)
  40. 400 NEXT
  41. 410 PRINT:PRINT "リターンキーで終了します。"
  42. 420 WHILE INKEY$<>CHR$(13):WEND
  43. 430 END
  44. 440 '
  45. 450 *GET_PAL_16  ' PAL_DAT( pallete No , RGB ) にパレットデーターを格納
  46. 460              ' RGB の対応 :  0 = R  ,  1 = G  ,  2 = B
  47. 470  FOR PAL_WORK=0 TO 15
  48. 480    OUT &HFD90,PAL_WORK,1
  49. 490    PAL_DAT(PAL_WORK,2)=INP(&HFD92,1) AND 240  ' B 成分
  50. 500    PAL_DAT(PAL_WORK,0)=INP(&HFD94,1) AND 240  ' R 成分
  51. 510    PAL_DAT(PAL_WORK,1)=INP(&HFD96,1) AND 240  ' G 成分
  52. 520  NEXT
  53. 530  RETURN
  54. 540 '
  55. 550 *GET_PAL_256  ' PAL_DAT( pallete No , RGB ) にパレットデーターを格納
  56. 560               ' RGB の対応 :  0 = R  ,  1 = G  ,  2 = B
  57. 570  FOR PAL_WORK=0 TO 255
  58. 580    OUT &HFD90,PAL_WORK,1
  59. 590    PAL_DAT(PAL_WORK,2)=INP(&HFD92,1)  ' B 成分
  60. 600    PAL_DAT(PAL_WORK,0)=INP(&HFD94,1)  ' R 成分
  61. 610    PAL_DAT(PAL_WORK,1)=INP(&HFD96,1)  ' G 成分
  62. 620  NEXT
  63. 630  RETURN
  64.